package com.jqq.inner_;

public class MemberInnerClass01 {
    public static void main(String[] args) {
        Outer08 outer08 = new Outer08();

        //外部其他类使用成员内部类的2种方式
        //1.外部对象名.new 成员内部类名()  == 把new Inner08()当作Outer08的一个成员
        Outer08.Inner08 inner08 = outer08.new Inner08();
        //2.在外部类中编写一个方法，可以返回Inner08对象
        Outer08.Inner08 inner08Instance = outer08.getInner08Instance();
        inner08.say();
    }
}
class Outer08{//外部类
    private int n1 = 10;
    public String name = "张三";
    private void hi()
    {
        System.out.println("hi()");
    }    //成员内部类是定义在外部类的成员位置
    //可以用修饰符修饰
    public class Inner08{//成员内部类
        private double sal = 99.9;
        private int n1 = 66;
        public void say(){
            //可以直接访问外部类的所有成员，包含私有的
            System.out.println("n1="+n1+" name="+name);
            //通过外部类名.this.成员名去访问
            System.out.println("n1="+Outer08.this.n1+" name="+name);
            hi();
        }
    }
    //返回成员内部类的实例
    public Inner08 getInner08Instance(){
        //调用成员内部类
        return new Inner08();
    }

}